

str1 = "我有一所房子，面朝大海，春暖花开；"

# 1、查找字符串具体某个元素的索引find（）
print(str1.find('房'))   # 4
print(str1[4])  # 房
# 从左往右查找元素直到找到为止返回索引值，如果有多个，返回最近的一个索引
# 设置索引范围查询("需要查找的元素",开始的索引，结束的索引)
print(str1.find("一")) # 3
print(str1.find("海", 6, 14)) # 10
print(str1[6:14])
# 如果没有找到对应的元素索引，返回-1
print(str1.rfind("a"))
# rfind从右边往左边找到第一个元素为"花"的索引
print(str1.rfind("花"))

# 2、查找字符串某个具体元素的索引index（）
print(str1.index('房'))
# 设置索引范围查询("需要查找的元素",开始的索引，结束的索引)
# 跟find方法的区别是没有找到元素时，index方法会报错，find返回-1
# print(str1.index("m")) # ValueError: substring not found


# 3、替换字符串中具体的某个元素，默认全部替换，也可以设置替换几次、
str2 = "AABBCCDD"
# 将A替换成1
print(str2.replace('A', '1'))   # 11BBCCDD
# 替换1次
print(str2.replace('A', '1', 1))

# 4、分割字符串str.split(),# 返回值是一个列表，通过指定字符进行切片，将切片的内容当做列表的元素进行储存
str3 = "this is a pen"
# 通过空格切割
print(str3.split(' '))

# 5、将字符串的英文首字母转大写str.title()
print(str3.title())

# 6、判断字符串是否已某个元素开头或者结尾str.startswith(),str.endswith,
print(str3.startswith('th'))    # True
print(str3.startswith("ha"))    # False
print(str3.endswith('en'))
# 可以加上范围来判断这个范围的开始和结尾
print(str3.endswith('is', 0, 4))


# 7、去除字符串左右两边的空格,准确来说是去除左右两边指定的字符，可以为空格或其他字符
str4 = "  ##你好哇    "
# 去除左边的空格,默认不输入是去除空格，也可以指定字符
print(str4.lstrip())
# 去除右边的空格
print(str4.rstrip(' '))

#  8、判断字符串是由数字组成（字符格式校验）
str5 = "123hhh"
str6 = "1239807"
print(str5.isdigit())
print(str6.isdigit())

# 9、判断字符串中是不是由字母组成，大小都可以
str7 = "jdisaojdisoajdsadDSAD"
str8 = "jdisaojdisoajdsadDSAD21321312"
print(str7.isalpha())
print(str8.isalpha())

# 10.将某个字符，拼接整个字符串,
str1 = "renshengkuduanwoyongpython"
print("-".join(str1))
print(" ".join(str1))
print("*".join(str1))

"""
字符串常用的方法不仅限于以上内容，不需要记住每个方法的名字，学习方法的具体使用即可
"""

